//随意指定一个文件  计算文件中有多少个字符a

# include <stdio.h>
# include <stdlib.h>
# include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

int main (int argc, char *argv []){
    if (argc < 2){
        fprintf (stderr, "Usage...\n");
        exit (1);
    }
    int fd;
    struct stat statres; //定义一个stat 类型的变量，来获取文件的长度

    fd = open(argv [1],O RDONLY);
    if(fd <0){
        perror("open ()");
        exit(1);
    }

    if (fstat(fd, &statres)<0){  //使用fstat 获取一个文件描述符对应文件的长度 并返回到statres中
        perror("fstat ()");
        exit(1);
    }
    char  * str;   //返回值是void* 所以接收类型怎么方便怎么定义
    str = mmap(NULL,state.st_size,PROT_READ,MAP SHARED,fd,0 );
    if(str ==MAP FAILED){    //失败
        perror ("mmap ()");
        exit (1);
    }
    close(fd);  //此时文件存储已经映射进程序，文件描述符已经可以关闭了
    long long count = 0;
    for(i = 0;i < statres.st_size; i++){
        if(str[i] ==a)
            count++;
    }
    printf ("%l\n",count);



    munmap(str,statres.st_size );


    exit(0);
}



